//T10082. 
//把'#'也看成一个结点时，树就是一个完全二叉树
#include <iostream>
using namespace std;

string s;

int main(){
    cin>>s;
    int len=s.length();
    bool flag=true;
    for(int i=0;i<len;i++){
        int lchild=2*i+1;//因下标从0开始，故左孩子为2*i+1
        int rchild=lchild+1;
        if (lchild<len&&rchild<len) {//左右孩子都存在时，有且仅当有一个孩子为'#'时，就不是对称的
            if ((s[lchild]=='#'&&s[rchild]!='#')||(s[lchild]!='#'&&s[rchild]=='#')){
                flag=false;
                break;
            }
        }
        if (lchild<len&&rchild>=len){//左孩子有，但没有右孩子，此为不对称
            flag=false;
            break;
        }
    }
    if (flag) cout<<"Yes";
    else cout<<"No";
}